#ifndef OBJET_INCLUDED
#define OBJET_INCLUDED
/**
 * \file objet.h
 * \brief Gestion des objets
 * \author Saul Nicolas
 * \date 20 Avril 2013
 *
 * Programme de gestion des objets pour le jeu "une retraite en enfer"
 *
 */
/** Module Objet : Ce module permet de décrire les armes utilisées par le joueur.
 * La structure comprend les champs force (déterminant les dégats), portée, cadence, vitesse, x et y pour la position,conso et idobjet
 * **/

/* Consommables */
#define ID_VIE 64
#define ID_VIEMAX 128
#define ID_VITESSE 256
#define ID_CADENCE 512
#define ID_PORTEE 1024
#define ID_FORCE 2048

/* Armes */
#define ID_CORPCORP 1
#define ID_DISTANCE 0

/** Liste objet
 * canne id: 11
 * epee minecraft id: 21
 * epee laserid id: 31
 * gun: id: 10
 * autre gun : id: 20
 * chapeau feu : id: 30
 * chapeau foudre id: 40
 * coeur (vie) id: 2
 * coeur ++ (viemax) id: 4
 * vitesse ++ id: 8
 * vitesse tir ++ id: 16
 * range ++ id: 32
 **/

/**
    \struct Objet
    \brief Structure décrivant les objets
    */

struct sObjet {
    int conso;
	float cadence;
	int vitesse;
	int Force;
	float Portee;
	int IdObjet;
	int x;
	int y;
};
typedef struct sObjet Objet;

/** Fonctions set/get **/
int getconsoObjet(const Objet* O);

float getcadenceObjet(const Objet* O);

int getyObjet(const Objet* O);

int getxObjet(const Objet* O);

int getcacheObjet(const Objet* O);

int getForceObjet(const Objet* O);

int getVitesseObjet(const Objet* O);

float getPorteeObjet(const Objet* O);

int getidObjetObjet(const Objet* O);

void setconsoObjet(Objet* O,int conso);

void setxyObjet(Objet* O , int x , int y);

void setcadenceObjet(Objet* O , float cadence);

void setVitesseObjet(Objet* O, int v);

void setcacheObjet(Objet* O , int cache);

void setForceObjet(Objet* O , int Force);

void setPorteeObjet(Objet* O , float Portee);

void setidObjetObjet(Objet* O , int idObjet);

void copieObjet(Objet* destination, const Objet* source);

/** Fonctions plus complexe de combats (nécéssite réfléxion sur les armes) **/
/**
    \brief Initialise un objet à partir du fichier de configuration
    \param [in] Objet * O
    \param [in] char* mottype
    \param [in] int x
    \param [in] int y

    */
void InitObjet(Objet * O, char * mottype, int x, int y);
#endif
